% Diagrama Conceptual

\subsection{Diagrama Conceptual}

A continuación se presenta el diagrama conceptual. Utilizando este modelo, intentamos mostrar de un modo un poco más abstracto cúales son las principales caráterísticas a tener en cuenta para los conceptos más relevantes que intervienen en la resolución propuesta del problema, y cúales son las relaciones que se dan entre ellos. 

Con este objetivo, tuvimos en cuenta la posiblidad de poner o no al software cómo una de las clases conceptuales. Decidimos dejarlo de lado, ya que en la mayoría de los casos actuaría de intermediario entre otros dos agentes, no permitiendo ver esa suerte de interacción que hay entre ellos tan claramente como en el diagrama propuesto a continuación.

A su vez, debemos mencionar que hay ciertas clases que en el problema sólo tienen una sóla instancia, como por ejemplo el Editor, la Redacción Central, etc. Como su rol es igualmente importante, decidimos dejarlos representados en el modelo haciendo esta previa aclaración.


\begin{figure}[H]
 \includegraphics[height=0.70\textheight,width=1.0\textwidth]{./img/diagrama_conceptual.jpg}
 \caption{Diagrama Conceptual}      
 \label{fig:5}      
\end{figure}

A continuación se exponen las restricciones más importantes, algunas utilizando el lenguaje OCL y otras en lenguaje natural, según nos pareció más adecuado al caso: 

Nota: Asumimos que tenemos la función dia::timeStamp$\rightarrow$Int, que devuelve el día de un timeStamp; y que el tipo timeStamp tiene operadores de comparación.

\begin{itemize}
 \item {\emph Las notas que el corrector corrige están destinadas a la versión impresa:} \\
 {\bf Context:} Corrector\\
 {\bf Inv:} self.corrige.nota.sePublicaEn.Impresa $\rightarrow$ size() $>$ 0
  
 \item {\emph Las notas que el investigador chequea están destinadas a la versión impresa:} \\
 {\bf Context:} Investigador\\
 {\bf Inv:} self.chequea.nota.sePublicaEn.Impresa $\rightarrow$ size() $>$ 0

 \item {\emph Todos los periodistas tienen un nombre listado diferente:} \\
 {\bf Context:} Periodista\\
 {\bf Inv:} Periodista.AllInstances() $\rightarrow$ forAll(p1,p2 $|$ p1.nombre $\neq$ p2.nombre)
   
 \item {\emph La fecha de publicación de las ediciones impresas difieren como mínimo en un día:} \\
 {\bf Context:} Impresa\\
 {\bf Inv:} Impresa.AllInstances() $\rightarrow$ \\ forAll( i1,i2 $|$ Abs( dia(i1.fecha\_alta) - dia(i2.fecha\_alta) ) $\ge$ 1 )

 \item {\emph Las ediciones digitales tienen fecha de baja mayor a la fecha de alta:} \\
 {\bf Context:} Digital\\
 {\bf Inv:} self.fecha\_alta $<$ self.fecha\_baja
   
 \item {\emph Las ediciones digitales no se solapan:} \\
 {\bf Context:} Digital\\
 {\bf Inv:} Digital.AllInstances() $\rightarrow $ forAll(d1,d2 $|$ d1.fecha\_baja $\leq$ d2.fecha\_alta XOR d2.fecha\_baja $\leq$ d1.fecha\_alta   ) 
 
 %%LENGUAJE NATURAL DIOS MIO
 \item {\emph Los periodistas tienen el índice de confiabilidad correcto:} \\
 Esto es, cada uno de los periodistas tiene su atributo índice\_conf, que representa su índice de confiabilidad, seteado de la manera descripta en el enunciado.
 
\end{itemize}
